900. Кирпичная стена
Из кирпичей размером 1 * 2
следует построить стену длины n и
высоты 2. Сколькими способами это можно сделать?
Вход. Каждая строка содержит длину стены n (n
£ 50).
Последняя строка содержит n = 0 и не
обрабатывается.
Выход. Для
каждого входного значения n вывести
количество способов, которыми можно построить кирпичную стену размером 2 * n .
1
2
3
0
1
2
3
числа Фибоначчи
Обозначим через f(n)
количество способов, которыми можно построить кирпичную стену высоты 2 и длины n.
Тогда можно положить один кирпич вертикально и далее строить стену длины n
–
Поскольку n £ 50, а 51 – ое число Фибоначчи выходит за пределы типа int, то
следует воспользоваться 64 битовым целочисленным типом long long.
#define i64
long long
i64
fib[51];
В массиве fib[51] сгенерируем все числа Фибоначчи
согласно выше приведенным начальным условиям (fib[i] = Fi+1).
fib[1] = 1;
fib[2] = 2;
for(i=3;i<51;i++)
fib[i] = fib[i-1] + fib[i-2];
Для каждого входного значения n выводим соответствующее ему число Фибоначчи.
while(scanf("%d",&n),n)
printf("%lld\n",fib[n]);